package com.vcoud.mundialbrasil2014.adapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.vcoud.mbrasil2014.R;
import com.vcoud.mundialbrasil2014.CargardorImagen;

public class GrupoExpandibleAdapter extends BaseExpandableListAdapter {
	private Activity context;
	private Map<String, ArrayList<HashMap<String, String>>> coleccionGrupos;
	private List<String> grupos;
	public static final String KEY_ID = "IDEquipo";
	public static final String KEY_NOMBRE = "Nombre";
	public static final String KEY_BANDERA = "Bandera";
	static final String KEY_COLOR = "Color";
	static final String KEY_GANADOS = "Ganados";
	static final String KEY_EMPATADOS = "Empatados";
	static final String KEY_PERDIDOS = "Perdidos";
	static final String KEY_CAMISA = "Camisa";
	static final String KEY_PUNTOS = "Puntos";
	static final String KEY_DIFERENCIAGOLES = "DiferenciaGoles";
	public CargardorImagen cargarImagen;

	public GrupoExpandibleAdapter(Activity context, List<String> grupos,
			Map<String, ArrayList<HashMap<String, String>>> coleccionGrupos) {
		this.context = context;
		this.coleccionGrupos = coleccionGrupos;
		this.grupos = grupos;
		cargarImagen = new CargardorImagen(context.getApplicationContext());
	}

	public void actualizar(List<String> grupos,
			Map<String, ArrayList<HashMap<String, String>>> coleccionGrupos) {
		this.grupos.clear();
		this.coleccionGrupos.clear();
		this.grupos = grupos;
		this.coleccionGrupos = coleccionGrupos;
		this.notifyDataSetChanged();
	}

	@Override
	public HashMap<String, String> getChild(int groupPosition, int childPosition) {
		return coleccionGrupos.get(grupos.get(groupPosition))
				.get(childPosition);
	}

	@Override
	public long getChildId(int groupPosition, int childPosition) {
		HashMap<String, String> equipo = new HashMap<String, String>();
		equipo = coleccionGrupos.get(grupos.get(groupPosition)).get(
				childPosition);
		long id = Long.parseLong(equipo.get(KEY_ID));
		return id;
	}

	@Override
	public View getChildView(final int groupPosition, final int childPosition,
			boolean isLastChild, View convertView, ViewGroup parent) {

		final HashMap<String, String> grupo = getChild(groupPosition,
				childPosition);

		LayoutInflater inflater = context.getLayoutInflater();

		if (convertView == null) {
			convertView = inflater.inflate(R.layout.list_grupo_hijo, null);
		}
		String mPartidosJugados = "";
		// Calculo para partidos jugados
		if (grupo.get(KEY_GANADOS) != "" || grupo.get(KEY_EMPATADOS) != ""
				|| grupo.get(KEY_PERDIDOS) != "") {
			mPartidosJugados = String.valueOf(Integer.parseInt(grupo
					.get(KEY_GANADOS))
					+ Integer.parseInt(grupo.get(KEY_EMPATADOS))
					+ Integer.parseInt(grupo.get(KEY_PERDIDOS)));
		}

		// Instancia de los textviews
		TextView item = (TextView) convertView.findViewById(R.id.grupo);
		TextView txtPj = (TextView) convertView.findViewById(R.id.txtPj);
		TextView txtG = (TextView) convertView.findViewById(R.id.txtG);
		TextView txtE = (TextView) convertView.findViewById(R.id.txtE);
		TextView txtP = (TextView) convertView.findViewById(R.id.txtP);
		TextView txtDG = (TextView) convertView.findViewById(R.id.txtDG);
		TextView txtPts = (TextView) convertView.findViewById(R.id.txtPts);

		// Asignacion del texto a los textviews
		item.setText(grupo.get(KEY_NOMBRE));
		txtPj.setText(mPartidosJugados);
		txtG.setText(grupo.get(KEY_GANADOS));
		txtE.setText(grupo.get(KEY_EMPATADOS));
		txtP.setText(grupo.get(KEY_PERDIDOS));
		txtDG.setText(grupo.get(KEY_DIFERENCIAGOLES));
		txtPts.setText(grupo.get(KEY_PUNTOS));

		ImageView bandera = (ImageView) convertView
				.findViewById(R.id.bandera_imagen);
		cargarImagen.mostrarImagen(grupo.get(KEY_BANDERA), bandera);

		return convertView;
	}

	@Override
	public int getChildrenCount(int groupPosition) {
		return coleccionGrupos.get(grupos.get(groupPosition)).size();
	}

	@Override
	public Object getGroup(int groupPosition) {
		return grupos.get(groupPosition);
	}

	@Override
	public int getGroupCount() {
		return grupos.size();
	}

	@Override
	public long getGroupId(int groupPosition) {
		return groupPosition;
	}

	@Override
	public View getGroupView(int groupPosition, boolean isExpanded,
			View convertView, ViewGroup parent) {
		String nombreGrupo = (String) getGroup(groupPosition);
		if (convertView == null) {
			LayoutInflater infalInflater = (LayoutInflater) context
					.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			convertView = infalInflater.inflate(R.layout.list_grupo, null);
		}
		TextView item = (TextView) convertView.findViewById(R.id.grupo);
		item.setTypeface(null, Typeface.BOLD);
		item.setText(context.getString(R.string.detalle_grupo) + " "
				+ nombreGrupo);
		return convertView;
	}

	@Override
	public boolean hasStableIds() {
		return true;
	}

	@Override
	public boolean isChildSelectable(int groupPosition, int childPosition) {
		return true;
	}
}
